package com.dy.design_pattern_study.visitor_pattern.dome3.impl_element;

import com.dy.design_pattern_study.visitor_pattern.dome3.Element;
import com.dy.design_pattern_study.visitor_pattern.dome3.Visitor;

/**
 * @CreateBy zhangdingyi
 * @Date 2023-04-25
 * @Content 可执行动作类 -被访问实体
 */
public class ConcreteElementA extends Element {
    @Override
    public void accept(Visitor visitor) {
        //利用双分派技术，实现数据处理与结构的分离
        //双分派：所谓双分派技术就是在选择一个方法的时候，不仅仅要根据消息接收者（receiver）的运行时区别，
        //还要根据参数的运行时区别
        //这里是运行时区别
        //就是在jvm后面运行的时候才根据具体的子类来进行分配
        visitor.visitConcreteElementA(this);
    }

    public void operation(){
        System.out.println("这个是其他的功能方法，可以独立的进行拓展");
    }
}
